/**
 * 项目名称: Topic_3.cpp
 * 项目路径: study/DataStructure/刷题/一轮/第十三天 数组+双指针
 * 编辑时间: 2024年09月15日19时16分02秒
 * 用   户: 轻尘
 */

#include <bits/stdc++.h>

using namespace std;

class Solution {
public:
    unordered_set<char> set;

    int lengthOfLongestSubstring(string s) {
        if (s.empty())return 0;

        int ans = 0, next = -1;
        for (int i = 0; i < s.size(); i++) {
            if (i != 0)set.erase(s[i - 1]);

            while (next + 1 < s.size() && !set.count(s[next + 1])) {
                //不断右移右指针
                set.insert(s[next + 1]);
                next++;
            }
            ans = max(ans, next - i + 1);
        }
        return ans;
    }
};
